package Principal;

import java.util.LinkedList;

public class Instituicao {
	
	//Atributos
	private Usuario usuario;
	private String nome; //nome da instituição
	private LinkedList <Aluno> alunos; //Vai servir para colocar um buscador de alunos mais generalizado
	private LinkedList <Disciplina> disciplinas;	
	private LinkedList <Evento> eventos; //Eventos do professor	
	
	//Construtor	
	public Instituicao () {
		
		alunos = new LinkedList <Aluno> ();
		disciplinas = new LinkedList <Disciplina> ();		
		eventos = new LinkedList <Evento> ();
		
	}
	
	//Metodos	
	public void setNome (String nome_) {
		
		nome = nome_;
		
	}
			
	public Usuario getUsuario() {
		
		return usuario;
		
	}

	public void setUsuario(Usuario usuario) {
		
		this.usuario = usuario;
		
	}

	public String getNome () {
		
		return nome;
		
	}
	
	//Metodos add, remover, selecionar e listar aluno
	public void addAluno (Aluno aluno_) {
		
		alunos.add(aluno_);
		
	}
	
	public void removerAluno (Aluno aluno_) {
		
		alunos.remove(aluno_);
		
	}
		
	public String listarAlunos () {
		
		String concatenar = "";		
		int contador = 0;
		
		for (Aluno index : alunos) {
			
			concatenar += contador + "- " + index + "\n";
			contador ++;
			
		}
				
		return concatenar;
		
	}
	
	public Aluno selecionarAluno (int valor) {
		
		String concatenar = "";		
		int contador = 0;
		for (Aluno index : alunos) {
			
			concatenar += contador + "- " + index + "\n";
			contador ++;
			
		}
		
		return alunos.get(valor);
		
	}
	
	//Metodos add, remover, listar, tamanho e selecionar disciplina 
	public void addDisciplina (Disciplina disciplinas_) {
		
		disciplinas.add(disciplinas_);
		
	}
	
	public void remover (Disciplina disciplinas_) {
		
		disciplinas.remove(disciplinas_);
		
	}
	
	public String listarDisciplinas () {
		
		String concatenar = "";		
		int contador = 0;
		for (Disciplina index : disciplinas) {
			
			concatenar += contador + "- " + index.getNome() + "\n";
			contador ++;
			
		}
		
		return concatenar;
		
	}
	
	public int tamanhoLista () {
		
		String concatenar = "";		
		int contador = 0;
		
		for (Disciplina index : disciplinas) {
			
			concatenar += contador + "- " + index + "\n";	
			contador ++;
			
		}
		
		return contador;
		
	}
	
	public Disciplina selecionarDisciplinas (int valor) {
		
		String concatenar = "";		
		int contador = 0;
		
		for (Disciplina index : disciplinas) {
			
			concatenar += contador + "- " + index + "\n";
			contador ++;
		}
		
		return disciplinas.get(valor);
		
	}
	
	//Metodos add, remover e listar eventos
	public void addEvento (Evento evento_) {
		
		eventos.add(evento_);
	}
	
	public void remover (Evento evento_) {
		
		eventos.remove(evento_);
		
	}
	
	public String listarEventos () {

			String concatenar = "";		
			int contador = 0;
			
			for (Evento index : eventos) {
				
				concatenar += contador + "- " + index.getTipo() +" - " + index.getData() + "\n";
				contador ++;
				
			}		
			return concatenar;
		
	}
	
	public Evento selecionarEvento (int valor) {
		
		String concatenar = "";		
		int contador = 0;
		
		for (Evento index : eventos) {
			
			concatenar += contador + "- " + index + "\n";
			contador ++;
			
		}
		
		return eventos.get(valor);
		
	}
	
	//Buscar alunos
	public Aluno buscarAluno (String nome) {
		
		for (Aluno index : alunos){
			
			if (index.getNome().equals(nome)){
				
				return index;
				
			}
			
		}
		
		return null;
				
	}
	
	//Metodo toString
	public String toString () {
		
		return "Instituição: " + nome + "\n" +
				"Meus alunos:" + listarAlunos() + "\n" +
				"Minhas disciplinas:" + listarDisciplinas() + "\n" +
				"Meus eventos:" + listarEventos() + "\n";
		
	}

}
